1. Field of the Invention
The present invention relates to the field of STREAMS-based Transmission Control Protocol/Internet Protocols (TCP/IP) protocols. Specifically, the present invention relates to the field of modular implementation of a TCP handoff protocol in order to facilitate the transfer or migration of TCP states from one node to another node in a communication network. The present invention further relates to the field of content-aware request distribution in a web server cluster.
2. Related Art
Web server clusters are the most popular configurations used to meet the growing traffic demands imposed by the Internet. However, for web server clusters to be able to achieve scalable performance, when the cluster size increases, it is imperative that the cluster employs some mechanism and/or policy for balanced request distribution. For instance, it is important to protect the web server clusters from overload and to provide service differentiation when different client requests compete for limited server resources. Mechanisms for intelligent request distribution and request differentiation help to achieve scalable and predictable cluster performance and functionality, which are essential for today's Internet web sites.
Traditional request distribution methods try to distribute the requests among the nodes in a web cluster based on certain parameters, such as, IP addresses, port numbers, and network load information. Some of these request distribution methods have the ability to check the packet header up to Layer 4 in the International Organization for Standardization Open Systems Interconnection (ISO/OSI) network reference model (e.g., TCP/IP) in order to make the distribution decision. As such, these methods are commonly referred to as Layer 4 request distributions.
FIG. 1 shows a communication network 100 of the prior art that illustrates a load balancing solution. In FIG. 1, a web server cluster 150 is shown. The cluster 150 can be a web site with a virtual IP address located at the load balancer 152. Various back-end web servers, such as back-end web server-1 155, back-end web server-2 157, on up to back-end web server-n 159 contain the content provided by the web site.
Typically, the load-balancer 152 sits as a front-end node on a local network and acts as a gateway for incoming connections. The load balancer 152 is also called a request distributor 152. Requests for content can come through the Internet 120 from various clients, such as client-1 110, client-2 112, on up to client-n 114. Incoming client requests are distributed, more or less, evenly to the pool of back-end web servers, without regard to the requested content. Further, the load balancer 152 forwards client requests to selected back-end nodes prior to establishing the connection with the client.
In this configuration, the web server cluster 150 appears as a single host to the clients. To the back-end web servers in a web cluster 150, the front-end load-balancer 152 appears as a gateway. In essence, it intercepts the incoming connection establishment packets and determines which back-end web server should process a particular request. Proprietary algorithms implemented in the front-end load balancer 152 are used to distribute the requests. These algorithms can take into account the number of back-end web servers available, the resources (CPU speed and memory) of each back-end web server, how many active TCP sessions are being serviced, etc. The balancing methods across different load-balancing servers vary, but in general, requests are forwarded to the least loaded back-end web server in the cluster 150.
In addition, only the virtual address located at the load balancer 152 is advertised to the Internet community, so the load balancer also acts as a safety net. The IP addresses of the individual back-end web servers are never sent back to the web browser located at the client making a request, such as client 110. The load-balancer rewrites the virtual cluster IP address to a particular web server IP address using Network Address Translation (NAT).
However, because of this IP address rewriting, both inbound requests and outbound responses must pass through the load-balancer 152. This creates a bottleneck and limits the scalability of the system.
Another solution for request distribution is illustrated by the Brendel et al. (U.S. Pat. No. 5,774,660) by Resonate, Inc. In Brendel et al., a load balancer examines the content of the web request to provide for better efficiency in processing requests. However, the Brendel et al. patent platform weaves a proprietary protocol within the TCP/IP protocol of an operating system of the load balancer. As a result, the algorithm utilized by the Brendel et al. patent necessitate kernel source modifications when porting from one operating system to another.
Also, in the Brendel et al. patent the proprietary protocol is applied at the application layer of the operating system of the load balancer. Incoming packets to the load balancer have their protocol changed from TCP to a non-TCP (IXP) standard that is only understood by the proprietary protocol located at the application layer. Later, the packets have their packets changed back to the TCP protocol for transmission to the back-end servers. Thus, the Brendel et al. patent reduces processing efficiency by switching back and forth between user level kernels. Further, were the Brendel et al. patent to be implemented at the operating system's kernel level, any modifications made to the proprietary protocol would necessarily require access to the kernel source file which typically is not available.
Thus, a need exists for more flexibility in designing and implementing a TCP/IP handoff mechanism in a web server cluster. Another need exists for a TCP/IP handoff mechanism that is more portable between different operating systems implementing the TCP/IP protocol. Still another need exists for better efficiency in performing TCP/IP handoff mechanisms.